/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package diseño09.controles;

import diseño09.GestionarPeriodoVeda;
import diseño09.GestionarPuntajesFecha;
import diseño09.IngresoUsuario;
import diseño09.PantallaInicio;
import diseño09.entidades.Administrador;
import diseño09.entidades.Participante;
import diseño09.entidades.Periodista;
import diseño09.entidades.Persona;

/**
 *
 * @author aguwolky
 */
public class GestorDeUsuarios {

    public Persona obtenerUsuario(String unTipoDocumento, long unDocumento){
        Persona a = null;

        return a;

        //HACERRRRRRRRRR!!!!!!!!!
    }

    public void guardarParticipante(String unApellido, String unNombre, Long unDocumento, 
            String unaContrasenia, char unSexo, String unTipoDocumento, String unaFechaNacimiento,
            String unaCalle,Integer unNroCalle, Integer unNroDepto, Integer unPiso,
            Integer unaManzana, String unEMail, String fechaRegistro, String horaRegistro){
        
    }

    public Participante crearParticipante(int id,String unApellido, String unNombre, Long unDocumento,
            String unaContrasenia, char unSexo, String unTipoDocumento, String unaFechaNacimiento,
            String unDomicilio, String unEMail, String fechaRegistro, String horaRegistro){
        return (new Participante(id,unApellido, unNombre, unDocumento, unaContrasenia,
            unSexo, unTipoDocumento, unaFechaNacimiento, unDomicilio,
            unEMail, fechaRegistro, horaRegistro));
    }

    public void guardarAdministrador(Administrador unAdministrador){

    }

    public void guardarPeriodista(Periodista unPeriodista){

    }

    public int validarUsuario(long unNumeroDocumento, String unTipoDocumento,
            String contrasenia){

        GestorDeBaseDeDatos gestor= new GestorDeBaseDeDatos();
        Persona p=gestor.instanciarPersona(unNumeroDocumento);
        if(p==null)
            return 0;
        else{
            VerificadorDeUsuarios verif=new VerificadorDeUsuarios();
            if(!verif.validarTipoDocumento(p, unTipoDocumento))
                return 1;
            if(!verif.validarContrasenia(p, contrasenia))
                return 2;
        }
        
        return 3;
    }

    public void iniciarSesion(PantallaInicio pantallaAnterior,long unNumeroDocumento){
        pantallaAnterior.dispose();
        
        int tipo=obtenerTipoUsuario(unNumeroDocumento);
        GestorDeBaseDeDatos gestor=new GestorDeBaseDeDatos();
        switch(tipo){
            case 0: Participante user=gestor.instanciarParticipante(unNumeroDocumento);
                    IngresoUsuario ven3=new IngresoUsuario(user);
                    ven3.setDefaultCloseOperation(2);
                    ven3.setVisible(true);
                    break;
            case 1: Administrador admin=gestor.instanciarAdministrador(unNumeroDocumento);
                    GestionarPeriodoVeda ven=new GestionarPeriodoVeda(admin);
                    ven.setDefaultCloseOperation(2);
                    ven.setVisible(true);
                    break;
            case 2: Periodista perio=gestor.instanciarPeriodista(unNumeroDocumento);
                    GestionarPuntajesFecha ven2=new GestionarPuntajesFecha(perio);
                    ven2.setDefaultCloseOperation(2);
                    ven2.setVisible(true);
                    break;
        }

    }
    
    public void loguear(Participante participante) {
        participante.setLogueado(true);
    }

    public void desloguear(Persona participante){
        participante.setLogueado(false);
    }

    private int obtenerTipoUsuario(long unNumeroDocumento) {
        GestorDeBaseDeDatos gestor=new GestorDeBaseDeDatos();
        return gestor.obtenerTipoUsuario(unNumeroDocumento);
    }

}
